home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / readsstv.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-05-02  |  8.5 KB  |  305 lines

  1. 10  REM ********************************************************************
  2. 20  REM read and display sstv information by Niel Wiegand
  3. 30  REM *******************************************************************
  4. 40  REM *******************************************************************
  5. 50  REM Prologue
  6. 60  REM system requirements: 128k, colorgraphics board, cassette interface,
  7. 70  REM                      drive a
  8. 80  REM Change History
  9. 90  REM 3-1: Initial release level
  10. 100  REM 3-3: Changed routines to process audio from basic to machine language
  11. 110  REM      Changed F7 to both input/store audio and process frame
  12. 120  REM 4-1: Added prologue section
  13. 130  REM 4-2: added routine to display period trace
  14. 140  REM      added vertical sync
  15. 150  REM 4-3: CHANGED MENU TO WORK FROM ALPHA KEYS
  16. 160  REM      ADDED HELP FUNCTION
  17. 170  REM      ADDED PARAMETER SETTING FOR SSTVMLS
  18. 171  REM 5-0: changed saved frame dataset names to pictureX.pic
  19. 180  REM ******************************************************************
  20. 190  REM ****************************************************************
  21. 200  REM set up function controls, load mls, and wait for command
  22. 210  REM *********************************************************************
  23. 220  BLACK=749
  24. 230  GRAY1=703
  25. 240  GRAY2=657
  26. 250  GRAY3=611
  27. 260  GRAY4=565
  28. 270  DEF SEG=&H1F10
  29. 280  BLOAD "SSTVMLS.OBJ",0
  30. 290  DEF SEG
  31. 300  GOSUB 460
  32. 310  KEY OFF
  33. 320  COMMAND$=INPUT$(1)
  34. 330  IF COMMAND$=" " THEN GOTO 320
  35. 340  IF COMMAND$="P" OR COMMAND$="p" THEN GOSUB 2140
  36. 350  IF COMMAND$="M" OR COMMAND$="m" THEN GOSUB 460
  37. 360  IF COMMAND$="I" OR COMMAND$="i" THEN GOSUB 1350
  38. 370  IF COMMAND$="D" OR COMMAND$="d" THEN GOSUB 760
  39. 380  IF COMMAND$="S" OR COMMAND$="s" THEN GOSUB 810
  40. 390  IF COMMAND$="L" OR COMMAND$="l" THEN GOSUB 1050
  41. 400  IF COMMAND$="H" OR COMMAND$="h" THEN GOSUB 2300
  42. 410  IF COMMAND$="C" OR COMMAND$="c" THEN GOSUB 2810
  43. 420  GOTO 320
  44. 430  REM *********************************************************************
  45. 440  REM display function menu
  46. 450  REM *********************************************************************
  47. 460  GOSUB 1720
  48. 470  CLS
  49. 480  LIN = 99
  50. 490  PRINT
  51. 500  PRINT
  52. 510  PRINT
  53. 520  PRINT "    SLOWSCAN TV MONITOR"
  54. 530  PRINT "        VERSION 5.0"
  55. 540  PRINT
  56. 550  REM   "      BY NIEL WIEGAND"
  57. 560  PRINT "        W B 5 Y T G"
  58. 570  REM   "     911 NORTH BEND DR."
  59. 580  REM   "     AUSTIN, TX. 78758"
  60. 590  REM   "     (AC)512-837-2492"
  61. 591  PRINT"    FREQ. USED FOR SSTV"
  62. 592  PRINT"   3.845   7.171   14.230"
  63. 593  PRINT"     21.340  28.680 MHz"
  64. 600  PRINT
  65. 610  PRINT
  66. 620  PRINT "  KEY P: PERIOD TRACE DISPLAY"
  67. 630  PRINT "  KEY M: MENU DISPLAY"
  68. 640  PRINT "  KEY I: INPUT AND DISPLAY SSTV FRAME"
  69. 650  PRINT "  KEY D: DISPLAY SSTV FRAME
  70. 660  PRINT "  KEY S: SAVE SSTV FRAME (1-5)
  71. 670  PRINT "  KEY L: LOAD SAVED SSTV FRAME (1-5)
  72. 680  PRINT "  KEY C: CHANGE SSTV SCREEN PARAMETERS"
  73. 690  PRINT "  KEY H: HELP AND INFORMATION FRAME"
  74. 700  PRINT
  75. 710  PRINT
  76. 720  RETURN
  77. 730  REM ****************************************************************
  78. 740  REM process and display sstv frame
  79. 750  REM ****************************************************************
  80. 760  RESTORE
  81. 770  GOTO 1780
  82. 780  REM ****************************************************************
  83. 790  REM save sstv frame
  84. 800  REM ****************************************************************
  85. 810  PRINT "frame number";
  86. 820  INPUT FRAMENUM
  87. 830  IF FRAMENUM <1 THEN GOTO 890
  88. 840  IF FRAMENUM >5 THEN GOTO 890
  89. 850  DEF SEG=&HB800
  90. 860  ON FRAMENUM-1 GOTO 900,930,960,990
  91. 870  BSAVE "picture1.pic",0,&H4000
  92. 880  DEF SEG
  93. 890  RETURN
  94. 900  BSAVE"picture2.pic",0,&H4000
  95. 910  DEF SEG
  96. 920  RETURN
  97. 930  BSAVE"picture3.pic",0,&H4000
  98. 940  DEF SEG
  99. 950  RETURN
  100. 960  BSAVE"picture4.pic",0,&H4000
  101. 970  DEF SEG
  102. 980  RETURN
  103. 990  BSAVE"picture5.pic",0,&H4000
  104. 1000  DEF SEG
  105. 1010  RETURN
  106. 1020  REM ****************************************************************
  107. 1030  REM load sstv frame
  108. 1040  REM ****************************************************************
  109. 1050  PRINT "frame number";
  110. 1060  INPUT FRAMENUM
  111. 1070  IF FRAMENUM <1 THEN GOTO 1050
  112. 1080  IF FRAMENUM >5 THEN GOTO 1050
  113. 1090  GOSUB 1570
  114. 1100  DEF SEG=&HB800
  115. 1110  ON FRAMENUM-1 GOTO 1150,1180,1210,1240
  116. 1120  BLOAD "picture1.pic",0
  117. 1130  DEF SEG
  118. 1140  RETURN
  119. 1150  BLOAD"picture2.pic",0
  120. 1160  DEF SEG
  121. 1170  RETURN
  122. 1180  BLOAD"picture3.pic",0
  123. 1190  DEF SEG
  124. 1200  RETURN
  125. 1210  BLOAD"picture4.pic",0
  126. 1220  DEF SEG
  127. 1230  RETURN
  128. 1240  BLOAD"picture5.pic",0
  129. 1250  DEF SEG
  130. 1260  RETURN
  131. 1270  REM *******************************************************************
  132. 1280  REM exit monitor program with proper display mode
  133. 1290  REM *******************************************************************
  134. 1300  GOSUB 1720
  135. 1310  END
  136. 1320  REM ******************************************************************
  137. 1330  REM read and store audio data
  138. 1340  REM ******************************************************************
  139. 1350  PRINT "WAITING FOR VERTICAL SYNC PULSE"
  140. 1360  DEF SEG=&H400
  141. 1370  X=PEEK(&H1A)
  142. 1380  POKE X,&H1C
  143. 1390  X=PEEK(&H1B)
  144. 1400  POKE X,&H1D
  145. 1410  DEF SEG=&H1F10
  146. 1420  MOTOR 1
  147. 1430  DEF USR3=6
  148. 1440  X=USR3(0)
  149. 1450  DEF USR0=0
  150. 1460  FOR I = 1 TO 300
  151. 1470  NEXT I
  152. 1480  PRINT "STORING SSTV AUDIO"
  153. 1490  X=USR0(0)
  154. 1500  MOTOR 0
  155. 1510  DEF SEG
  156. 1520  PRINT "SSTV frame stored"
  157. 1530  GOTO 1780
  158. 1540  REM ******************************************************************
  159. 1550  REM set up screen for low resolution gray mode
  160. 1560  REM ******************************************************************
  161. 1570  RESTORE
  162. 1580  CLS
  163. 1590  SCREEN 0,5
  164. 1600  OUT &H3D8,33
  165. 1610  DATA 113,80,85,10,127,6,100,112,02,01
  166. 1620  FOR I=0 TO 9
  167. 1630  READ REGINFO
  168. 1640  OUT &H3D4,I
  169. 1650  OUT &H3D5,REGINFO
  170. 1660  NEXT I
  171. 1670  OUT &H3D8,9
  172. 1680  RETURN
  173. 1690  REM ******************************************************************
  174. 1700  REM restore normal alpha/num mode
  175. 1710  REM ******************************************************************
  176. 1720  WIDTH 40
  177. 1730  SCREEN 0,0,0
  178. 1740  RETURN
  179. 1750  REM *********************************************************************
  180. 1760  REM initialize variables and display
  181. 1770  REM *********************************************************************
  182. 1780  GOSUB 1570
  183. 1790  DEF SEG=&H1F10
  184. 1800  POKE &H1A,125 'MAX RIGHT BORDER
  185. 1810  POKE &H1B,115 'MIN RIGHT BORDER
  186. 1820  POKE &H1D,25  'SYNC LIMIT
  187. 1830  POKE &H1E,6   'SYNC INCREMENT
  188. 1840  POKE &H1F,1   'NON-SYNC DECREMENT
  189. 1850  POKE &HC,182  'SYNC PERIOD MINUS 768
  190. 1860  POKE &H18,100 'NOISE PERIOD MINUS 256
  191. 1870  POKE &HE,(BLACK MOD 256)
  192. 1880  POKE &HF,(BLACK \ 256)
  193. 1890  POKE &H10,(GRAY1 MOD 256)
  194. 1900  POKE &H11,(GRAY1 \ 256)
  195. 1910  POKE &H12,(GRAY2 MOD 256)
  196. 1920  POKE &H13,(GRAY2 \ 256)
  197. 1930  POKE &H14,(GRAY3 MOD 256)
  198. 1940  POKE &H15,(GRAY3 \ 256)
  199. 1950  POKE &H16,(GRAY4 MOD 256)
  200. 1960  POKE &H17,(GRAY4 \ 256)
  201. 1970  DEF USR1=3
  202. 1980  X=USR1(0)
  203. 1990  DEF SEG
  204. 2000  RETURN
  205. 2010  REM ******************************************************************
  206. 2020  REM load saved audio buffer
  207. 2030  REM ******************************************************************
  208. 2040  REM this allows testing standard sstv data rather than using F7 to
  209. 2050  REM load the data from cassette tape.
  210. 2060  REM ******************************************************************
  211. 2070  DEF SEG = &H1700
  212. 2080  BLOAD "audio.dat",0
  213. 2090  DEF SEG
  214. 2100  END
  215. 2110  REM ******************************************************************
  216. 2120  REM display period trace
  217. 2130  REM ******************************************************************
  218. 2140  CLS
  219. 2150  WIDTH 80
  220. 2160  SCREEN 2
  221. 2170  LOCATE 4,1
  222. 2180  PRINT"WHT"
  223. 2190  LOCATE 12,1
  224. 2200  PRINT "BLK"
  225. 2210  LOCATE 19,1
  226. 2220  PRINT "SYNC"
  227. 2230  DEF SEG=&H1F10
  228. 2240  DEF USR3=9
  229. 2250  MOTOR 1
  230. 2260  X=USR3(0)
  231. 2270  MOTOR 0
  232. 2280  DEF SEG
  233. 2290  RETURN
  234. 2300  GOSUB 1720
  235. 2310  CLS
  236. 2320  PRINT"PLOT PERIOD TRACE: AUDIO INPUT THROUGH"
  237. 2330  PRINT"THE CASSETTE INPUT PORT IS PLOTTED"
  238. 2340  PRINT"ON THE SCREEN. VERTICAL SCALE IS MARKED"
  239. 2350  PRINT"FOR APPROXIMATE PERIODS OF WHITE, BLACK"
  240. 2360  PRINT"AND SYNC. PLOTS 600 CYCLES THEN EXITS."
  241. 2370  PRINT
  242. 2380  PRINT"MENU DISPLAY: DISPLAY FUNCTION MENU."
  243. 2390  PRINT
  244. 2400  PRINT"INPUT AND DISPLAY SSTV: AUDIO INPUT"
  245. 2410  PRINT"THROUGH THE CASSETTE INPUT PORT IS"
  246. 2420  PRINT"USED TO GENERATE A SSTV FRAME IN THREE"
  247. 2430  PRINT"STEPS. FIRST WAIT FOR THE VERTICAL SYNC"
  248. 2440  PRINT"PULSE, THEN STORE AUDIO CYCLE PERIODS"
  249. 2450  PRINT"IN AUDIO BUFFER, THEN PROCESS AUDIO"
  250. 2460  PRINT"BUFFER TO FORM SSTV FRAME."
  251. 2470  PRINT
  252. 2480  PRINT"DISPLAY SSTV FRAME: AUDIO PREVIOUSLY"
  253. 2490  PRINT"INPUT AND STORED IN THE AUDIO BUFFER"
  254. 2500  PRINT"IS PROCESSED TO GENERATE A SSTV FRAME"
  255. 2510  PRINT
  256. 2520  PRINT"ENTER TO READ MORE
  257. 2530  COMMAND$=INPUT$(1)
  258. 2540  IF COMMAND$=" " THEN GOTO 2530
  259. 2550  PRINT
  260. 2560  PRINT"SAVE SSTV FRAME: SAVE THE DISPLAY"
  261. 2570  PRINT"BUFFER AS RAW BINARY DATA IN ONE OF"
  262. 2580  PRINT"FIVE DATASETS ON THE DISKETTE"
  263. 2590  PRINT"CURRENTLY LOADED ON DRIVE A."
  264. 2600  PRINT
  265. 2610  PRINT"LOAD SAVED SSTV FRAME: LOAD RAW BINARY"
  266. 2620  PRINT"DATA FROM ONE OF FIVE DATASETS ON THE"
  267. 2630  PRINT"DISKETTE CURRENTLY LOADED ON DRIVE A"
  268. 2640  PRINT"INTO THE DISPLAY BUFFER."
  269. 2650  PRINT
  270. 2660  PRINT"CHANGE SSTV SCREEN PARAMETERS: CONTRAST"
  271. 2670  PRINT"AND BRIGHTNESS OF THE PICTURE MAY BE"
  272. 2680  PRINT"ADJUSTED. NORMAL SETTINGS SET BOTH"
  273. 2690  PRINT"EVENLY. CONTRAST OF ZERO IS MOST"
  274. 2700  PRINT"CONTRASTY PICTURE. BRIGHTNESS OF 500"
  275. 2710  PRINT"IS DARKEST PICTURE."
  276. 2720  PRINT
  277. 2730  PRINT"ENTER TO RETURN TO MAIN MENU"
  278. 2740  COMMAND$=INPUT$(1)
  279. 2750  IF COMMAND$=" " THEN GOTO 2740
  280. 2760  GOSUB 460
  281. 2770  RETURN
  282. 2780  REM ********************************************************************
  283. 2790  REM CHANGE PARAMETERS PASSED TO MACHINE LANGUAGE SUBROUTINE
  284. 2800  REM *******************************************************************
  285. 2810  GOSUB 1720
  286. 2820  CLS
  287. 2830  PRINT "CURRENT BRIGHTNESS SETTING: "GRAY2
  288. 2840  PRINT "CURRENT CONTRAST SETTING: "CONTRAST
  289. 2850  PRINT
  290. 2860  PRINT "INPUT BRIGHTNESS SETTING FROM 500 TO"
  291. 2870  PRINT "800 (NORMALLY 657)";
  292. 2880  INPUT" ", GRAY2
  293. 2890  GRAY2=INT(GRAY2)
  294. 2900  PRINT
  295. 2910  PRINT "INPUT CONTRAST SETTING FROM 0 TO 100"
  296. 2920  PRINT "(NORMALLY 46)";
  297. 2930  INPUT" ", CONTRAST
  298. 2940  CONTRAST=INT(CONTRAST)
  299. 2950  GRAY1=GRAY2+CONTRAST
  300. 2960  BLACK=GRAY1+CONTRAST
  301. 2970  GRAY3=GRAY2-CONTRAST
  302. 2980  GRAY4=GRAY3-CONTRAST
  303. 2990  GOSUB 460
  304. 3000  RETURN
  305.